package com.maimang.platform.dsp.entity;

import com.maimang.platform.annotation.Excel;
import com.maimang.platform.base.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.persistence.Table;
import java.math.BigDecimal;

/**
 * @author Rocky
 * @version 1.0.0
 * @classname Ad
 * @description <br>广告计划表对应实体类</br>
 * @date 2019-11-25 11:13:45
 * @email jintaozhao@qq.com
 */
@Table(name = "dsp_ad")
public class Ad extends BaseEntity {
	private static final long serialVersionUID = 1L;


	/**
	 * 广告计划ID
	 */
	@Excel(name = "广告计划ID")
	private String id;

	/**
	 * 广告名称
	 */
	@Excel(name = "广告名称")
	private String name;

	/**
	 * 广告主ID
	 */
	@Excel(name = "广告主ID")
	private String advertiserId;

	/**
	 * 广告组ID
	 */
	@Excel(name = "广告组ID")
	private String campaignId;

	/**
	 * 投放范围
	 */
	@Excel(name = "投放范围")
	private String deliveryRange;

	/**
	 * 穿山甲视频创意类型
	 */
	@Excel(name = "穿山甲视频创意类型")
	private String unionVideoType;

	/**
	 * 广告组预算类型
	 */
	@Excel(name = "广告组预算类型")
	private String budgetMode;

	/**
	 * 广告组预算
	 */
	@Excel(name = "广告组预算")
	private BigDecimal budget;

	/**
	 * 广告出价
	 */
	@Excel(name = "广告出价")
	private BigDecimal bid;

	/**
	 * 计划出价类型
	 */
	@Excel(name = "计划出价类型")
	private String pricing;

	/**
	 * ocpm广告转化出价
	 */
	@Excel(name = "ocpm广告转化出价")
	private BigDecimal cpaBid;

	/**
	 * 自动出价类型，OCPM支持
	 */
	@Excel(name = "自动出价类型，OCPM支持")
	private String smartBidType;

	/**
	 * 是否调整自动出价
	 */
	@Excel(name = "是否调整自动出价")
	private Integer adjustCpa;

	/**
	 * 深度优化方式
	 */
	@Excel(name = "深度优化方式")
	private String deepBidType;

	/**
	 * 深度优化出价，deep_bid_type=DEEP_BID_MIN时此字段有值
	 */
	@Excel(name = "深度优化出价，deep_bid_type=DEEP_BID_MIN时此字段有值")
	private Float deepCpabid;

	/**
	 * 深度转化ROI系数
	 */
	@Excel(name = "深度转化ROI系数")
	private Float roiGoal;

	/**
	 * 上次修改时间戳(用于更新计划时提交,服务端判断是否基于最新信息修改)
	 */
	@Excel(name = "上次修改时间戳(用于更新计划时提交,服务端判断是否基于最新信息修改)")
	private String modifyTime;

	/**
	 * 计划上次修改时间
	 */
	@Excel(name = "计划上次修改时间")
	private String adModifyTime;

	/**
	 * 计划创建时间
	 */
	@Excel(name = "计划创建时间")
	private String adCreateTime;

	/**
	 * 广告计划投放状态
	 */
	@Excel(name = "广告计划投放状态")
	private String status;

	/**
	 * 学习期状态
	 */
	@Excel(name = "学习期状态")
	private String learningPhase;

	/**
	 * 广告计划操作状态
	 */
	@Excel(name = "广告计划操作状态")
	private String optStatus;

	/**
	 * 广告投放起始时间
	 */
	@Excel(name = "广告投放起始时间")
	private String startTime;

	/**
	 * 广告投放结束时间
	 */
	@Excel(name = "广告投放结束时间")
	private String endTime;

	/**
	 * 广告投放时间类型
	 */
	@Excel(name = "广告投放时间类型")
	private String scheduleType;

	/**
	 * 广告投放时段
	 */
	@Excel(name = "广告投放时段")
	private String scheduleTime;

	/**
	 * 广告投放速度类型
	 */
	@Excel(name = "广告投放速度类型")
	private String flowControlMode;

	/**
	 * 创意投放位置
	 */
	@Excel(name = "创意投放位置")
	private String inventoryType;

	/**
	 * 转化类型广告的转化工具id
	 */
	@Excel(name = "转化类型广告的转化工具id")
	private Integer convertId;

	/**
	 * 转化类型
	 */
	@Excel(name = "转化类型")
	private String externalActions;

	/**
	 * 过滤已转化用户类型字段
	 */
	@Excel(name = "过滤已转化用户类型字段")
	private String hideIfConverted;

	/**
	 * 过滤已安装
	 */
	@Excel(name = "过滤已安装")
	private Integer hideIfExists;

	/**
	 * 门店ids
	 */
	@Excel(name = "门店ids")
	private String advertiserStoreIds;

	/**
	 * 应用直达链接
	 */
	@Excel(name = "应用直达链接")
	private String openUrl;

	/**
	 * 应用下载方式
	 */
	@Excel(name = "应用下载方式")
	private String downloadType;

	/**
	 * 广告落地页链接
	 */
	@Excel(name = "广告落地页链接")
	private String externalUrl;

	/**
	 * 广告应用下载链接
	 */
	@Excel(name = "广告应用下载链接")
	private String downloadUrl;

	/**
	 * 广告应用下载类型
	 */
	@Excel(name = "广告应用下载类型")
	private String appType;

	/**
	 * 广告应用下载包名
	 */
	@Excel(name = "广告应用下载包名")
	private String packageName;

	/**
	 * 下载模式
	 */
	@Excel(name = "下载模式")
	private String downloadMode;

	/**
	 * 门店类型
	 */
	@Excel(name = "门店类型")
	private String storeType;

	/**
	 * 产品目录ID, 当推广目的landing_type为DPA时返回
	 */
	@Excel(name = "产品目录ID, 当推广目的landing_type为DPA时返回")
	private Integer productPlatformId;

	/**
	 * dpa广告类型取值范围
	 */
	@Excel(name = "dpa广告类型取值范围")
	private String dpaAdtype;

	/**
	 * DPA落地页类型广告落地页链接
	 */
	@Excel(name = "DPA落地页类型广告落地页链接")
	private String dpaExternalUrls;

	/**
	 * DPA直达链接
	 */
	@Excel(name = "DPA直达链接")
	private String dpaOpenUrls;

	/**
	 * DPA投放范围取值范围
	 */
	@Excel(name = "DPA投放范围取值范围")
	private String categoryType;

	/**
	 * category_type取值范围为CATEGORY时必填，表示类别
	 */
	@Excel(name = "category_type取值范围为CATEGORY时必填，表示类别")
	private String dpaCategories;

	/**
	 * category_type为PRODUCT时必填，表示商品列表
	 */
	@Excel(name = "category_type为PRODUCT时必填，表示商品列表")
	private String dpaProducts;

	/**
	 * H5地址参数
	 */
	@Excel(name = "H5地址参数")
	private String externalUrlParams;

	/**
	 * DPA直达链接参数
	 */
	@Excel(name = "DPA直达链接参数")
	private String openUrlParams;

	/**
	 * 第三方唯一键
	 */
	@Excel(name = "第三方唯一键")
	private String uniqueFk;

	/**
	 * 定向包ID
	 */
	@Excel(name = "定向包ID")
	private Integer audiencePackageId;

	/**
	 * 广告受众
	 */
	@Excel(name = "广告受众")
	private String audience;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAdvertiserId() {
		return advertiserId;
	}

	public void setAdvertiserId(String advertiserId) {
		this.advertiserId = advertiserId;
	}

	public String getCampaignId() {
		return campaignId;
	}

	public void setCampaignId(String campaignId) {
		this.campaignId = campaignId;
	}

	public String getDeliveryRange() {
		return deliveryRange;
	}

	public void setDeliveryRange(String deliveryRange) {
		this.deliveryRange = deliveryRange;
	}

	public String getUnionVideoType() {
		return unionVideoType;
	}

	public void setUnionVideoType(String unionVideoType) {
		this.unionVideoType = unionVideoType;
	}

	public String getBudgetMode() {
		return budgetMode;
	}

	public void setBudgetMode(String budgetMode) {
		this.budgetMode = budgetMode;
	}

	public BigDecimal getBudget() {
		return budget;
	}

	public void setBudget(BigDecimal budget) {
		this.budget = budget;
	}

	public BigDecimal getBid() {
		return bid;
	}

	public void setBid(BigDecimal bid) {
		this.bid = bid;
	}

	public String getPricing() {
		return pricing;
	}

	public void setPricing(String pricing) {
		this.pricing = pricing;
	}

	public BigDecimal getCpaBid() {
		return cpaBid;
	}

	public void setCpaBid(BigDecimal cpaBid) {
		this.cpaBid = cpaBid;
	}

	public String getSmartBidType() {
		return smartBidType;
	}

	public void setSmartBidType(String smartBidType) {
		this.smartBidType = smartBidType;
	}

	public Integer getAdjustCpa() {
		return adjustCpa;
	}

	public void setAdjustCpa(Integer adjustCpa) {
		this.adjustCpa = adjustCpa;
	}

	public String getDeepBidType() {
		return deepBidType;
	}

	public void setDeepBidType(String deepBidType) {
		this.deepBidType = deepBidType;
	}

	public Float getDeepCpabid() {
		return deepCpabid;
	}

	public void setDeepCpabid(Float deepCpabid) {
		this.deepCpabid = deepCpabid;
	}

	public Float getRoiGoal() {
		return roiGoal;
	}

	public void setRoiGoal(Float roiGoal) {
		this.roiGoal = roiGoal;
	}

	public String getModifyTime() {
		return modifyTime;
	}

	public void setModifyTime(String modifyTime) {
		this.modifyTime = modifyTime;
	}

	public String getAdModifyTime() {
		return adModifyTime;
	}

	public void setAdModifyTime(String adModifyTime) {
		this.adModifyTime = adModifyTime;
	}

	public String getAdCreateTime() {
		return adCreateTime;
	}

	public void setAdCreateTime(String adCreateTime) {
		this.adCreateTime = adCreateTime;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getLearningPhase() {
		return learningPhase;
	}

	public void setLearningPhase(String learningPhase) {
		this.learningPhase = learningPhase;
	}

	public String getOptStatus() {
		return optStatus;
	}

	public void setOptStatus(String optStatus) {
		this.optStatus = optStatus;
	}

	public String getStartTime() {
		return startTime;
	}

	public void setStartTime(String startTime) {
		this.startTime = startTime;
	}

	public String getEndTime() {
		return endTime;
	}

	public void setEndTime(String endTime) {
		this.endTime = endTime;
	}

	public String getScheduleType() {
		return scheduleType;
	}

	public void setScheduleType(String scheduleType) {
		this.scheduleType = scheduleType;
	}

	public String getScheduleTime() {
		return scheduleTime;
	}

	public void setScheduleTime(String scheduleTime) {
		this.scheduleTime = scheduleTime;
	}

	public String getFlowControlMode() {
		return flowControlMode;
	}

	public void setFlowControlMode(String flowControlMode) {
		this.flowControlMode = flowControlMode;
	}

	public String getInventoryType() {
		return inventoryType;
	}

	public void setInventoryType(String inventoryType) {
		this.inventoryType = inventoryType;
	}

	public Integer getConvertId() {
		return convertId;
	}

	public void setConvertId(Integer convertId) {
		this.convertId = convertId;
	}

	public String getExternalActions() {
		return externalActions;
	}

	public void setExternalActions(String externalActions) {
		this.externalActions = externalActions;
	}

	public String getHideIfConverted() {
		return hideIfConverted;
	}

	public void setHideIfConverted(String hideIfConverted) {
		this.hideIfConverted = hideIfConverted;
	}

	public Integer getHideIfExists() {
		return hideIfExists;
	}

	public void setHideIfExists(Integer hideIfExists) {
		this.hideIfExists = hideIfExists;
	}

	public String getAdvertiserStoreIds() {
		return advertiserStoreIds;
	}

	public void setAdvertiserStoreIds(String advertiserStoreIds) {
		this.advertiserStoreIds = advertiserStoreIds;
	}

	public String getOpenUrl() {
		return openUrl;
	}

	public void setOpenUrl(String openUrl) {
		this.openUrl = openUrl;
	}

	public String getDownloadType() {
		return downloadType;
	}

	public void setDownloadType(String downloadType) {
		this.downloadType = downloadType;
	}

	public String getExternalUrl() {
		return externalUrl;
	}

	public void setExternalUrl(String externalUrl) {
		this.externalUrl = externalUrl;
	}

	public String getDownloadUrl() {
		return downloadUrl;
	}

	public void setDownloadUrl(String downloadUrl) {
		this.downloadUrl = downloadUrl;
	}

	public String getAppType() {
		return appType;
	}

	public void setAppType(String appType) {
		this.appType = appType;
	}

	public String getPackage() {
		return packageName;
	}

	public void setPackage(String packageName) {
		this.packageName = packageName;
	}

	public String getDownloadMode() {
		return downloadMode;
	}

	public void setDownloadMode(String downloadMode) {
		this.downloadMode = downloadMode;
	}

	public String getStoreType() {
		return storeType;
	}

	public void setStoreType(String storeType) {
		this.storeType = storeType;
	}

	public Integer getProductPlatformId() {
		return productPlatformId;
	}

	public void setProductPlatformId(Integer productPlatformId) {
		this.productPlatformId = productPlatformId;
	}

	public String getDpaAdtype() {
		return dpaAdtype;
	}

	public void setDpaAdtype(String dpaAdtype) {
		this.dpaAdtype = dpaAdtype;
	}

	public String getDpaExternalUrls() {
		return dpaExternalUrls;
	}

	public void setDpaExternalUrls(String dpaExternalUrls) {
		this.dpaExternalUrls = dpaExternalUrls;
	}

	public String getDpaOpenUrls() {
		return dpaOpenUrls;
	}

	public void setDpaOpenUrls(String dpaOpenUrls) {
		this.dpaOpenUrls = dpaOpenUrls;
	}

	public String getCategoryType() {
		return categoryType;
	}

	public void setCategoryType(String categoryType) {
		this.categoryType = categoryType;
	}

	public String getDpaCategories() {
		return dpaCategories;
	}

	public void setDpaCategories(String dpaCategories) {
		this.dpaCategories = dpaCategories;
	}

	public String getDpaProducts() {
		return dpaProducts;
	}

	public void setDpaProducts(String dpaProducts) {
		this.dpaProducts = dpaProducts;
	}

	public String getExternalUrlParams() {
		return externalUrlParams;
	}

	public void setExternalUrlParams(String externalUrlParams) {
		this.externalUrlParams = externalUrlParams;
	}

	public String getOpenUrlParams() {
		return openUrlParams;
	}

	public void setOpenUrlParams(String openUrlParams) {
		this.openUrlParams = openUrlParams;
	}

	public String getUniqueFk() {
		return uniqueFk;
	}

	public void setUniqueFk(String uniqueFk) {
		this.uniqueFk = uniqueFk;
	}

	public Integer getAudiencePackageId() {
		return audiencePackageId;
	}

	public void setAudiencePackageId(Integer audiencePackageId) {
		this.audiencePackageId = audiencePackageId;
	}

	public String getAudience() {
		return audience;
	}

	public void setAudience(String audience) {
		this.audience = audience;
	}

	public String toString() {
		return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
				.append("id" , getId())
				.append("name" , getName())
				.append("advertiserId" , getAdvertiserId())
				.append("campaignId" , getCampaignId())
				.append("deliveryRange" , getDeliveryRange())
				.append("unionVideoType" , getUnionVideoType())
				.append("budgetMode" , getBudgetMode())
				.append("budget" , getBudget())
				.append("bid" , getBid())
				.append("pricing" , getPricing())
				.append("cpaBid" , getCpaBid())
				.append("smartBidType" , getSmartBidType())
				.append("adjustCpa" , getAdjustCpa())
				.append("deepBidType" , getDeepBidType())
				.append("deepCpabid" , getDeepCpabid())
				.append("roiGoal" , getRoiGoal())
				.append("modifyTime" , getModifyTime())
				.append("adModifyTime" , getAdModifyTime())
				.append("adCreateTime" , getAdCreateTime())
				.append("status" , getStatus())
				.append("learningPhase" , getLearningPhase())
				.append("optStatus" , getOptStatus())
				.append("startTime" , getStartTime())
				.append("endTime" , getEndTime())
				.append("scheduleType" , getScheduleType())
				.append("scheduleTime" , getScheduleTime())
				.append("flowControlMode" , getFlowControlMode())
				.append("inventoryType" , getInventoryType())
				.append("convertId" , getConvertId())
				.append("externalActions" , getExternalActions())
				.append("hideIfConverted" , getHideIfConverted())
				.append("hideIfExists" , getHideIfExists())
				.append("advertiserStoreIds" , getAdvertiserStoreIds())
				.append("openUrl" , getOpenUrl())
				.append("downloadType" , getDownloadType())
				.append("externalUrl" , getExternalUrl())
				.append("downloadUrl" , getDownloadUrl())
				.append("appType" , getAppType())
				.append("package" , getPackage())
				.append("downloadMode" , getDownloadMode())
				.append("storeType" , getStoreType())
				.append("productPlatformId" , getProductPlatformId())
				.append("dpaAdtype" , getDpaAdtype())
				.append("dpaExternalUrls" , getDpaExternalUrls())
				.append("dpaOpenUrls" , getDpaOpenUrls())
				.append("categoryType" , getCategoryType())
				.append("dpaCategories" , getDpaCategories())
				.append("dpaProducts" , getDpaProducts())
				.append("externalUrlParams" , getExternalUrlParams())
				.append("openUrlParams" , getOpenUrlParams())
				.append("uniqueFk" , getUniqueFk())
				.append("audiencePackageId" , getAudiencePackageId())
				.append("audience" , getAudience())
				.append("createUser" , getCreateUser())
				.append("createTime" , getCreateTime())
				.append("updateUser" , getUpdateUser())
				.append("updateTime" , getUpdateTime())
				.toString();
	}
}
